2023/12/231442字符
结构体
package main
import "fmt"
func main() {
car1 := Car{
name: "BWM",
length: 3.2,
color: "white",
}
fmt.Println(car1) //--> {BWM 0 3.2 white}
car2 := Car{ "Benz", 1, 3.3, "black" }
fmt.Println(car2) //--> {Benz 1 3.3 black}
}
type Car struct {
name string
age int
length float32
color string
}
匿名结构体
package main
import "fmt"
func main() {
car1 := struct {
name string
color string
}{
name: "BWM",
color: "white",
}
fmt.Println(car1) //--> {BWM white}
}
内存分析
package main
import "fmt"
func main() {
car1 := Car{
name: "BWM",
color: "white",
}
car2 := car1 // 深拷贝
car2.name = "Benz"
fmt.Println(car1, car2) //--> {BWM white} {Benz white}
}
type Car struct {
name string
color string
}
结构体嵌套
package main
import "fmt"
func main() {
dog := Dog{
animal: Animal{ name: "小黑", age: 2 },
like: "骨头",
}
fmt.Println(dog) //--> {{小黑 2} 骨头}
}
type Animal struct {
name string
age int
}
type Dog struct {
animal Animal
like string
}
引用传递
package main
import "fmt"
func main() {
animal := Animal{ name: "小黑", age: 2 }
dog := Dog{ animal: &animal, like: "骨头" }
dog.animal.age = 3
fmt.Println(animal) //--> {小黑 3}
}
type Animal struct {
name string
age int
}
type Dog struct {
animal *Animal
like string
}